package com.yehangtech.designpattern.行为型_备忘录模式;

import com.yehangtech.designpattern.行为型_备忘录模式.service.Admin;
import com.yehangtech.designpattern.行为型_备忘录模式.service.ConfigFile;
import com.yehangtech.designpattern.行为型_备忘录模式.service.ConfigOriginator;

import java.util.Date;

/**
 * 备忘录模式是以可以恢复或者说回滚，配置、版本、悔棋为核⼼功能的设计模式，⽽这种设计模式属于
 * ⾏为模式。在功能实现上是以不破坏原对象为基础增加备忘录操作类，记录原对象的⾏为从⽽实现备忘
 * 录模式。
 */
public class Main {
    public static void main(String[] args) {
        Admin admin = new Admin();
        ConfigOriginator configOriginator = new ConfigOriginator();
        configOriginator.setConfigFile(new ConfigFile("1000001", "配置内容A=哈哈", new Date(), "cjyyp"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000002", "配置内容A=嘻嘻", new Date(), "cjyyp"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000003", "配置内容A=么么", new Date(), "cjyyp"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        configOriginator.setConfigFile(new ConfigFile("1000004", "配置内容A=嘿嘿", new Date(), "cjyyp"));
        admin.append(configOriginator.saveMemento()); // 保存配置
        // 历史配置(回滚)
        configOriginator.getMemento(admin.undo());
    }
}
